using System;
using System.Collections.Generic;
using System.ComponentModel;
using Iesi.Collections;
using Iesi.Collections.Generic;
using METODESA.Server.Data.Components;
using METODESA.Server.Data.Exceptions;
using METODESA.Server.Data.METODESA.Entity;

namespace METODESA.Server.Data.METODESA.Entity 
{    
	/// <summary>
	/// An object representation of the ProductoProveedor table
	/// </summary>
	[Serializable]
	public partial class ProductoProveedor
	{
		private PairIdComponent _Id;
		private Producto _Producto;
		private Proveedor _Proveedor;


	    public ProductoProveedor(Producto _Producto, Proveedor _Proveedor)
	    {
	        this._Producto = _Producto;
	        this._Proveedor = _Proveedor;
	    }


	    public ProductoProveedor()
	    {
	    }

	    public virtual PairIdComponent Id
		{
			get
			{
				return _Id;
			}
			set
			{
				_Id = value;
			}
		}

		public virtual Producto Producto
		{
			get
			{
				return _Producto;
			}
			set
			{
				_Producto = value;
			}
		}

		public virtual Proveedor Proveedor
		{
			get
			{
				return _Proveedor;
			}
			set
			{
				_Proveedor = value;
			}
		}


		protected bool Equals(ProductoProveedor entity)
		{
			if (entity == null) return false;
			if (!base.Equals(entity)) return false;
			if (!Equals(_Id, entity._Id)) return false;
			return true;
		}

		public override bool Equals(object obj)
		{
			if (ReferenceEquals(this, obj)) return true;
			return Equals(obj as ProductoProveedor);
		}

		public override int GetHashCode()
		{
			int result = base.GetHashCode();
			result = 29*result + _Id.GetHashCode();
			return result;
		}

	}
}
